/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gwt.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.LongBox;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.datepicker.client.DateBox;

/**
 *
 * @author Ricardo Armando Machorro Reyes
 */
public class UiProveedor extends Composite {
    
    private static UiProveedorUiBinder uiBinder = GWT.create(UiProveedorUiBinder.class);
    private static final DateTimeFormat fmt = DateTimeFormat.getFormat("dd/MM/yyyy");
    private final ServicioProveedorAsync sp = GWT.create(ServicioProveedor.class);
    @UiField(provided=true)
    DateBox.Format dbFmt = new DateBox.DefaultFormat(fmt);
    @UiField
    LongBox clave;
    
    @UiField
    TextBox nombre, telefono, correo;
    
    @UiField
    TextArea direccion;
    
    @UiField
    DateBox fecha;
    
    interface UiProveedorUiBinder extends UiBinder<Widget, UiProveedor> {
    }
    
    public UiProveedor() {
        initWidget(uiBinder.createAndBindUi(this));
    }
    
    @UiHandler("agregar")
    public void metodoAgregar(ClickEvent event){
       final Proveedor objeto = new Proveedor();
       objeto.setClave(clave.getValue());
       objeto.setNombre(nombre.getText());
       objeto.setTelefono(telefono.getText());
       objeto.setCorreo(correo.getText());
       objeto.setDireccion(direccion.getText());
       objeto.setFecha(fecha.getValue());
       
       sp.agrega(objeto, new AsyncCallback<Void>() {

            @Override
            public void onFailure(Throwable caught) {
                GWT.log("Error ", caught);
                Window.alert(caught.getLocalizedMessage());
            }

            @Override
            public void onSuccess(Void result) {
                Window.alert("Proveedor Agregado");
            }
        });
    
    
    }
    @UiHandler("limpiar")
    public void limpiar(ClickEvent event){
    
        clave.setValue(null);
        nombre.setText("");
        telefono.setText("");
        correo.setText("");
        direccion.setText("");
        fecha.setValue(null);
    
    }
    @UiHandler("consultar")
    public void consulta(ClickEvent event){
    
       Long cla = clave.getValue();
       sp.todos(cla, new AsyncCallback<Proveedor>() {

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void onSuccess(Proveedor objeto) {
 
              if (objeto!=null){  
                nombre.setText(objeto.getNombre());
                telefono.setText(objeto.getTelefono());
                correo.setText(objeto.getCorreo());
                direccion.setText(objeto.getDireccion());
                fecha.setValue(objeto.getFecha());
              }else{
                  Window.alert("Proveedor No Encontrado");
              
              }
            }
        });
    
    }
    
    public void muestra(){
    
       Display.getPanel().setWidget(this);
    }
    
}
